In virtually all wireless communication systems, the data to be transmitted is encoded or modulated prior to transmission to a receiver device. If the data to be transmitted is an analogue signal, for example a voice signal, it is common to transmit the data representing the analogue signal as a digital signal. Broadly speaking, this is done by first sampling the analogue signal to produce a discrete representation of the signal. The rate at which the signal is sampled is termed the “sampling rate”. The sampled signal could be encoded as digital data using, for example, Pulse Code Modulation (PCM). In PCM, each of the discrete values of the sampled signal are represented in binary. The binary values can then be transmitted over a communication network as a bit stream. The bit stream is often segmented into frames, and each frame can contain information relating to, for example, the transmitter or information to be used by the receiving device so it can correctly process the transmitted data. Some networks may transmit data in packets, where each packet may contain several frames.
Typically, in a communication network a coder will encode the data into a bit stream and a decoder will decode the received bit stream into an output signal. The combination of a coder and decoder is known as a codec. A key problem in wireless communication networks is adverse connection conditions which can result in a received frame or packet containing bit errors. This can result in the packet being considered to be in a damaged state or lost. The difference between a packet being considered damaged or lost can arise from the position of the bit error within the packet. If the bit error is within the packet header it can lead to the whole packet being rejected, which is termed packet loss. Alternatively, if the bit error is within the payload of the packet, the packet could be considered as damaged. Generally, the techniques used to improve the received data quality in the event of a damaged packet or packet loss can be divided into two groups: transmitter-side recovery techniques and receiver-side recovery techniques. Transmitter-side recovery techniques include, for example: retransmission of a degraded packet; interleaving the content of several packets or the addition of error correction coding bits to the data packets to be transmitted, which is known as forward error correction coding (FEC). Transmission-side recovery techniques often suffer from the problem of increased bandwidth and delays to the transmission of the data. For this reason, transmission-side recovery techniques are typically limited to applications where the expected packet loss/damage rate is low. Furthermore, transmitter-side recovery techniques often require greater computational complexity, meaning that certain transmitters are not suitable for its implementation.
Receiver-side recovery techniques are known as packet loss concealment (PLC) techniques. PLC techniques work by generating replacement data to cover data missing from a received bit stream. PLC is often applied when the data transmitted over the network is speech data. Some PLC techniques can be of relatively low complexity, for example the receiver can replace the damaged packet with data corresponding to silence, a technique known as muting. Another technique is to replace the lost packet with a replica of a previously received packet. However, both of these techniques can lead to a poor quality output signal. More complex techniques include model based concealment methods, in which the speech signal either side of the lost packet is modelled in order to generate data corresponding to the speech signal for the lost packet. Model based techniques can result in a high quality output signal, however they can be highly complex and expensive to implement.
In practice, PLC techniques are often based on interpolation, in which data for the replacement packet is generated by interpolating parameters on one or both sides of the lost packet. Interpolation techniques are popular due to their relative simplicity and ability to generate reasonably high quality output signals. One example of an interpolation based technique is known as “pitch-based waveform substitution”, in which the pitch period of the damaged or lost packet is estimated using a buffer of previously decoded signal. A segment of buffered signal is then selected that is one or multiple pitch periods apart from the damaged or lost signal. This selected segment of signal is output as the replacement signal. Pitch-based waveform substitution is particularly effective when the signal to be transmitted is a voice signal, due to the quasi-periodic nature of such signals.
FIG. 1 is a schematic diagram of a receiver 100 implementing pitch-based waveform substitution. A received signal So representing received encoded data is input into a decoder 101 and a Bad-Frame Indicator (BFI) module 102. The BFI module determines whether the received encoded data contains any corrupted frames, where a corrupted frame could include both damaged frames and lost frames. If it is determined that a frame is not corrupted, a switch 103 is connected such that the signal representing the data in that frame is output as the output signal Ŝo. A pitch measurement module 104 estimates the pitch period of the output signal representing that frame and inputs samples of that signal into a buffer 105. If the BFI determines that a frame is corrupted, the switch is configured such that the output signal is output from the buffer rather than the decoder. The pitch period of the corrupted frame is estimated from the buffered decoded signals and pitch periods. The pitch period is then used to select a segment of decoded data from the buffer that can be output as a replacement signal for the corrupted frame.
Pitch based waveform substitution as described with reference to FIG. 1 can be an effective PLC method when the decoder does not require a memory to decode the received data. Unfortunately, it is not so effective at addressing the problem of PLC when the decoder operates to decode received data in dependence on an internal state held by the decoder. Examples of coding schemes in which the decoder operates in dependence on an internal state are: Continuously Variable Slope Delta (CVSD); Sub-band Coding (SBC) and Adaptive Delta Pulse Code Modulation (ADPCM). In these coding schemes, if the internal state of the decoder is not updated following the receipt of a degraded frame, then the decoder will be left in an internal state corresponding to the degraded frame. This internal state is often not the ideal internal state for the decoder to correctly decode the next received frame. This can result in the decoder incorrectly decoding the next received frame even if this frame is not degraded, which can have the effect of increasing the effective length of the frame loss to be greater than the length of the lost frame itself. There is therefore a need to compensate for the effect of the decoder holding an incorrect internal state following the receipt of a degraded frame.
US 2010/0125454 (Zopf) describes a system in which a signal corresponding to a replacement frame is re-encoded and used to update the state of the decoder following receipt of a lost frame. In more detail, a PLC module generates a decoded signal corresponding to a replacement frame. This signal is input into an analysis filter bank to re-encode the signal. This re-encoded signal is then passed through the decoder to generate a decoded output signal. Passing the re-encoded signal corresponding to the replacement frame through the decoder updates the state of the decoder such that the decoder is no longer in a state corresponding to the lost frame (see FIGS. 11 & 12; paragraphs 72 to 81). However, re-encoding a decoded signal and passing this re-encoded signal through the decoder introduces delays to the receiver system and requires additional processing power. There is thus a need for an improved method of updating the state of a decoder during PLC.